import axios from "axios";

// 这里想要封装一个基准路径
// 方便请求,无需每次输入完整的服务器地址
// 如果要对这个 axios 库设定默认的基准路径
axios.defaults.baseURL = "http://157.122.54.189:9083"
// axios.defaults.baseURL = "http://liangwei.tech:3000"



// 拦截请求头 若没有请求头但本地有token 就为他 添加请求头
// 使用请求拦截器, 统一添加 token (假如有)
axios.interceptors.request.use(config => {
    // 避免了每次发送请求都要加上 token 的问题
    if (!config.headers.Authorization && localStorage.getItem('token')) {
        config.headers.Authorization = localStorage.getItem('token')
    }
    return config
})
// 需要添加拦截器, 无论哪个页面发请求, 响应都应该来到这里
// 先做判断处理, 再返回给页面
// 响应拦截器固定写法:
// axios.interceptors.response.use()
// 这个固定写法可以接受回调函数作为参数, 所有的响应都会被这个回调接受到进行处理
axios.interceptors.response.use(res => {
    // 拦截器可以拦截到结果 res
    // 记得需要放行
    // 如果获取的数据 res.data 有 statusCode 而且是 4 开头的三位数
    const errCodePattern = /^4\d{2}$/;
    if (errCodePattern.test(res.data.statusCode)) {
        // 弹出错误提示
        Toast.fail(res.data.message || '系统错误')
    }
    // 另外一个独有的错误逻辑, 所有用户信息校验失败的错误
    // 都应该清理 localStorage 跳转到登录页
    if (res.data.message === '用户信息验证失败') {
        localStorage.removeItem('token');
        localStorage.removeItem('userId');
        Toast('GG')
        router.replace('/login')
    }
    return res
})

export default axios